﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NDF.Web.Mvc
{
    /// <summary>
    /// 表示用于定义的 HTTP 请求响应。
    /// </summary>
    public class HttpContent
    {
        /// <summary>
        /// 获取或设置内容。
        /// </summary>
        public string Content { get; set; }

        /// <summary>
        /// 获取或设置内容编码。
        /// </summary>
        public Encoding ContentEncoding { get; set; }

        /// <summary>
        /// 获取或设置内容类型。
        /// </summary>
        public string ContentType { get; set; }


        /// <summary>
        /// 创建一个空的 HTTP 请求响应对象。
        /// </summary>
        /// <returns>空的 HTTP 请求响应对象。</returns>
        public static HttpContent Create()
        {
            return new HttpContent();
        }

        /// <summary>
        /// 以指定的内容创建一个 HTTP 请求响应对象。
        /// </summary>
        /// <param name="content">HTTP 请求响应内容。</param>
        /// <returns>包含指定内容的 HTTP 请求响应对象。</returns>
        public static HttpContent Create(string content)
        {
            return new HttpContent { Content = content };
        }

        /// <summary>
        /// 以指定的内容和内容类型创建一个 HTTP 请求响应对象。
        /// </summary>
        /// <param name="content">HTTP 请求响应内容。</param>
        /// <param name="contentType">HTTP 请求响应内容类型。</param>
        /// <returns>包含指定内容和内容类型的 HTTP 请求响应对象。</returns>
        public static HttpContent Create(string content, string contentType)
        {
            return new HttpContent { Content = content, ContentType = contentType};
        }

        /// <summary>
        /// 以指定的内容、内容类型和内容编码创建一个 HTTP 请求响应对象。
        /// </summary>
        /// <param name="content">HTTP 请求响应内容。</param>
        /// <param name="contentType">HTTP 请求响应内容类型。</param>
        /// <param name="contentEncoding">HTTP 请求响应编码。</param>
        /// <returns>包含指定内容、内容类型和内容编码的 HTTP 请求响应对象。</returns>
        public static HttpContent Create(string content, string contentType, Encoding contentEncoding)
        {
            return new HttpContent { Content = content, ContentType = contentType, ContentEncoding = contentEncoding };
        }
    }
}
